<template>
	<view class="content">

		<!-- 导航栏部分 -->
		<view class="status-contents">
			<view class="status-contents_left" @click="back()"><uni-icon type="back" size="30" class="back" color="#fff"></uni-icon></view>
			<view class="status-contents_centent">充值</view>
		</view>
		<view class="Box">
			<view class="BoxTitle">充值金额</view>
			<view class="moenyBox">
				<view  :class="['moenyBoxCotent',tabIndex==100 ? 'active' : '']"  :data-current="100"  @click="tapTab(100)">100元</view>
				<view :class="['moenyBoxCotent',tabIndex==200 ? 'active' : '']"  :data-current="200"  @click="tapTab(200)">200元</view>
				<view :class="['moenyBoxCotent',tabIndex==300 ? 'active' : '']"  :data-current="300"  @click="tapTab(300)">500元</view>
			</view>
			<view class="Boxinput">
				<input type="number" v-model="pay_money"  placeholder="其他金额"  @blur="pay()"/>
				</view>
			<!-- <view class="tip">tip:金额必须大于等于100</view> -->

			<button  class="btnOne" @click="WeChatPay()">微信充值</button>
			<button  class="btnTwo" @click="payAli()">支付宝充值</button>
		</view>
	</view>
</template>

<script>
import uniIcon from '@/components/uni-icon/uni-icon.vue';
import eonfox from '@/components/eonfox/eonfox.js';
import fns from '@/components/eonfox/fns.js';
var ef = new eonfox();
export default {
	data() {
		return {
			pay_money: '',
			pay_switch: false,
			chooseplay: '',
			tabIndex:0
		};
	},

	components: {
		uniIcon,
		eonfox,
		fns
	},
	onLoad(e) {
		this.chooseplay = e.chooseplay;
		console.log('000000', this.chooseplay);
	},
	methods: {
		back() {
			uni.navigateBack({
				delta: 1
			});
		},
		tapTab(num){
			this.tabIndex=num
		},
		pay() {
			var _this = this;
			_this.tabIndex=0
			if (!/^\d+(\.\d+)?$/.test(_this.pay_money) || _this.pay_money <= 0) {
				uni.showToast({
					title: '请输入正确金额',
					icon: 'none'
				});
			}
		},
		payAli() {
			var _this = this;
			if (!/^\d+(\.\d+)?$/.test(_this.pay_money) || _this.pay_money <= 0) {
				uni.showToast({
					title: '请输入正确金额',
					icon: 'none'
				});
			}else{
				var money_fen=''
				if(_this.tabIndex!=0){
					money_fen=_this.tabIndex*100
				}else{
					money_fen=_this.pay_money*100
				}
				ef.submit({
					request: {
						s: [
							'APPLICATIONORDERSELFBUYUSERMONEY',
							[
								{
									money_fen: _this.money_fen, //必须|要购买余额(人民币，分)
									pay_method: 'alipay', //支付方式 weixinpay 微信支付、alipay 支付宝支付
									alipay_trade_type: 'APP'
								}
							]
						]
					},
					callback(data) {
						console.log('调起支付宝支付', data);
				
						fns.checkError(data, 's', function(errno, error) {
							uni.showToast({
								title: error,
								icon: 'none'
							});
						});
						var ali = data.data.s.data.alipay;
						if (ali) {
							uni.requestPayment({
								provider: 'alipay',
								orderInfo: ali,
								success: function(res) {
									console.log('success:' + JSON.stringify(res));
									_this.load();
									uni.showToast({
										title: '充值成功',
										icon: 'none'
									});
								},
								fail: function(err) {
									console.log('fail:' + JSON.stringify(err));
								}
							});
						}
					},
					error(err) {
						fns.err('提交订单失败', err, 1);
					}
				});
			}
		},
		// 微信充值
		WeChatPay(){
			var _this=this
			// if (!/^\d+(\.\d+)?$/.test(_this.pay_money) || _this.pay_money <= 0) {
			// 	uni.showToast({
			// 		title: '请输入正确金额',
			// 		icon: 'none'
			// 	});
			// }else{
				var money_fen=''
				if(_this.tabIndex!=0){
					money_fen=_this.tabIndex*100
				}else{
					money_fen=_this.pay_money*100
				}
				// APP充值
				// #ifdef APP-PLUS
				ef.submit({
					request: {
						s: [
							'APPLICATIONORDERSELFBUYUSERMONEY',
							[
								{
									money_fen: money_fen, //必须|要购买余额(人民币，分)
									pay_method: 'weixinpay', //支付方式 weixinpay 微信支付、alipay 支付宝支付
									weixin_trade_type: 'APP'
								}
							]
						]
					},
					callback: function(data) {
						console.log('商家', data);
						if (
							fns.checkError(data, 's', function(erron, error) {
								uni.showToast({
									title: error,
									icon: 'none'
								});
								_this.pay_switch = false;
							})
						) {
							//7,已支付
							//发起支付
							console.log('发起支付', data.data.s.data);
							_this.requestPayment(data.data.s.data);
							//获取成功，无错误信息时
						}
					},
					error(err) {
						fns.err('提交订单失败', err, 1);
					}
				});
				// #endif
				
				//#ifdef  MP-WEIXIN
				  wx.login({
				  	//微信小程序登录获取code
				  	success(res) {
				  		// #ifdef MP-WEIXIN
				  		_this.code = res.code;
				  		// #endif
				  		// #ifdef APP-PLUS
				  		_this.code = res.authResult.openid;
				  		// #endif
				  		if (_this.code) {
				  			//获取到code生成订单
				  			// 发起网络请求
				  			console.log('发起网络请求');
				  			ef.submit({
				  				request: {
				  					s: [
				  						'APPLICATIONORDERSELFBUYUSERMONEY',
				  						[
				  							{
				  								money_fen: money_fen, //必须|要购买余额(人民币，分)
				  								// #ifdef MP-WEIXIN
				  								weixin_login_code: _this.code,
				  								pay_method: 'weixinpay', //支付方式 weixinpay 微信支付、alipay 支付宝支付
				  								weixin_trade_type: 'JSAPI',
				  								// #endif
				  								// #ifdef APP-PLUS
				  								weixin_login_openid: _this.code,
				  								pay_method: 'weixinpay', //支付方式 weixinpay 微信支付、alipay 支付宝支付
				  								weixin_trade_type: 'APP'
				  								// #endif
				  							}
				  						]
				  					]
				  				},
				  				callback: function(data) {
				  					console.log('商家', data);
				  					if (
				  						fns.checkError(data, 's', function(erron, error) {
				  							uni.showToast({
				  								title: error,
				  								icon: 'none'
				  							});
				  							_this.pay_switch = false;
				  						})
				  					) {
				  						//7,已支付
				  						//发起支付
				  						console.log('发起支付', data.data.s.data);
				  						_this.requestPayment(data.data.s.data);
				  						//获取成功，无错误信息时
				  					}
				  				},
				  				error: function(err) {
				  					console.log('出错啦', err);
				  					uni.showToast({
				  						title: JSON.stringify(err),
				  						icon: 'none'
				  					});
				  					_this.pay_switch = false;
				  				}
				  			});
				  		} else {
				  			_this.pay_switch = false;
				  			console.log('登录失败！' + res.errMsg);
				  			uni.showToast({
				  				title: '登录失败！' + res.errMsg,
				  				icon: 'none'
				  			});
				  		}
				  	},
				  	fail() {
				  		_this.pay_switch = false;
				  	}
				  });
				// #endif
				
				//#ifdef H5
				ef.submit({
					request: {
						s: ['SESSIONWEIXINACCESSTOKEN']
					},
					callback(data) {
						var dataList = fns.checkError(data, 's', function(errno, error) {
							uni.showToast({
								title: '请先确认微信授权',
								icon: 'none'
							})
						})
						console.log(dataList);
						if (dataList.s) {
							ef.submit({
								request: {
									s: ['APPLICATIONORDERSELFBUYUSERMONEY',
							[
								{
									money_fen: money_fen, //必须|要购买余额(人民币，分)
									pay_method: 'weixinpay', //支付方式 weixinpay 微信支付、alipay 支付宝支付
									weixin_trade_type: 'MPJSAPI',
									weixin_login_openid: dataList.s.openid
								}
							]
									]
								},
				
								callback(data) {
									console.log('调起微信支付', data);
									var dataList = fns.checkError(data, 's', function(errno, error) {
										uni.showToast({
											title: error,
											icon: 'none'
										});
									});
									var ress = dataList.s;
									if (ress) {
										console.log('ress', ress);
				
										var getBrandWCPayRequest = {
											appId: ress.appid,
											timeStamp: String(ress.time_stamp), // 支付签名时间戳，注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
											nonceStr: ress.nonce_str, // 支付签名随机串，不长于 32 位
											package: 'prepay_id=' + ress.prepay_id, // 统一支付接口返回的prepay_id参数值，提交格式如：prepay_id=\*\*\*）
											signType: ress.sign_type, // 签名方式，默认为'SHA1'，使用新版支付需传入'MD5'
											paySign: ress.pay_sign, // 支付签名
										};
				
										console.log('getBrandWCPayRequest', getBrandWCPayRequest);
				
										function onBridgeReady() {
											WeixinJSBridge.invoke(
												'getBrandWCPayRequest', getBrandWCPayRequest,
												function(res) {
													if (res.err_msg == "get_brand_wcpay_request:ok") {
														uni.showToast({
															title: '支付成功',
															success() {
																// setTimeout(function() {
																// 	uni.navigateTo({
																// 		url: '../../pagesB/my-order/my-order'
																// 	});
																// }, 2000)
															}
														})
													}
													if (res.err_msg == "get_brand_wcpay_request:fail") {
														uni.showToast({
															title: '支付失败',
															icon: 'none'
														})
													}
													if (res.err_msg == "get_brand_wcpay_request:cancel") {
														uni.showToast({
															title: '已取消支付',
															icon: 'none',
															success() {
																setTimeout(function() {
																	uni.navigateBack({
																		delta: 1
																	});
																}, 1500)
															}
														})
													}
												});
										}
				
										if (typeof WeixinJSBridge == "undefined") {
											if (document.addEventListener) {
												document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
											} else if (document.attachEvent) {
												document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
												document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
											}
										} else {
											onBridgeReady();
										}
				
									} else {
										console.log('提交订单失败', ress);
										_this.payWeChatPMJSAPI();
				
									}
									console.log('提交订单', ress);
				
								},
								error(err) {
									console.log('提交订单失败', err, 1);
								}
							});
				
				
						} else {
				
							console.log('location', location.href);
				
							//当 ACCESSTOKEN 不存在
							ef.left_token(function(left_token) {
								var notify_url = encodeURIComponent(location.href);
								var url = ef.api_server_url + "?" + encodeURI('data=[["SESSIONWEIXINAUTHORIZE",[{"notify_url":"' +
									notify_url + '"}]]]') + "&token=" + left_token;
								console.log(url);
								location.href = url;
							});
				
						}
					},
					error(err) {
						fns.err('err', err, 1)
					}
				})
				// #endif
				
			// }
		},
		
		//app微信支付
		pay_APP_weixin() {
			var _this = this;
			ef.submit({
				request: {
					s: [
						'APPLICATIONORDERSELFBUYUSERMONEY',
						[
							{
								money_fen: _this.pay_money * 100, //必须|要购买余额(人民币，分)
								pay_method: 'weixinpay', //支付方式 weixinpay 微信支付、alipay 支付宝支付
								weixin_trade_type: 'APP'
							}
						]
					]
				},
				callback: function(data) {
					console.log('商家', data);
					if (
						fns.checkError(data, 's', function(erron, error) {
							uni.showToast({
								title: error,
								icon: 'none'
							});
							_this.pay_switch = false;
						})
					) {
						//7,已支付
						//发起支付
						console.log('发起支付', data.data.s.data);
						_this.requestPayment(data.data.s.data);
						//获取成功，无错误信息时
					}
				},
				error(err) {
					fns.err('提交订单失败', err, 1);
				}
			});
		},
		//微信小程序支付
		pay_mp_weixin() {
			var _this = this;
			wx.login({
				//微信小程序登录获取code
				success(res) {
					// #ifdef MP-WEIXIN
					_this.code = res.code;
					// #endif
					// #ifdef APP-PLUS
					_this.code = res.authResult.openid;
					// #endif
					if (_this.code) {
						//获取到code生成订单
						// 发起网络请求
						console.log('发起网络请求');
						ef.submit({
							request: {
								s: [
									'APPLICATIONORDERSELFBUYUSERMONEY',
									[
										{
											money_fen: _this.pay_money * 100, //必须|要购买余额(人民币，分)
											// #ifdef MP-WEIXIN
											weixin_login_code: _this.code,
											pay_method: 'weixinpay', //支付方式 weixinpay 微信支付、alipay 支付宝支付
											weixin_trade_type: 'JSAPI',
											// #endif
											// #ifdef APP-PLUS
											weixin_login_openid: _this.code,
											pay_method: 'weixinpay', //支付方式 weixinpay 微信支付、alipay 支付宝支付
											weixin_trade_type: 'APP'
											// #endif
										}
									]
								]
							},
							callback: function(data) {
								console.log('商家', data);
								if (
									fns.checkError(data, 's', function(erron, error) {
										uni.showToast({
											title: error,
											icon: 'none'
										});
										_this.pay_switch = false;
									})
								) {
									//7,已支付
									//发起支付
									console.log('发起支付', data.data.s.data);
									_this.requestPayment(data.data.s.data);
									//获取成功，无错误信息时
								}
							},
							error: function(err) {
								console.log('出错啦', err);
								uni.showToast({
									title: JSON.stringify(err),
									icon: 'none'
								});
								_this.pay_switch = false;
							}
						});
					} else {
						_this.pay_switch = false;
						console.log('登录失败！' + res.errMsg);
						uni.showToast({
							title: '登录失败！' + res.errMsg,
							icon: 'none'
						});
					}
				},
				fail() {
					_this.pay_switch = false;
				}
			});
		},

		requestPayment(wxArr) {
			var _this = this;
			_this.test = '开始了';
			var _this = this;
			console.log('支付参数' + JSON.stringify(wxArr));
			console.log('调起支付');
			_this.test = '调起支付';

			// #ifdef APP-PLUS
			var orderInfo = {
				appid: wxArr.appid,
				partnerid: wxArr.mch_id, //商户号
				prepayid: wxArr.prepay_id, //预支付交易会话ID
				package: 'Sign=WXPay', //扩展字段,暂填写固定值Sign=WXPay
				noncestr: wxArr.nonce_str, //随机字符串
				timestamp: wxArr.time_stamp, //时间戳
				sign: wxArr.pay_sign //签名
			};
			// #endif

			uni.requestPayment({
				// #ifdef MP-WEIXIN
				provider: 'wxpay',
				timeStamp: String(wxArr.time_stamp),
				nonceStr: wxArr.nonce_str,
				package: 'prepay_id=' + wxArr.prepay_id,
				signType: wxArr.sign_type,
				paySign: wxArr.pay_sign,
				orderInfo: wxArr,
				// #endif
				// #ifdef APP-PLUS
				provider: 'wxpay',
				orderInfo: JSON.stringify(orderInfo),
				// #endif
				success: function(res) {
					console.log('成功success:' + JSON.stringify(res));
					if (res.errMsg == 'requestPayment:ok') {
						_this.pay_switch = false;
						//支付成功是进行订单查询
						var out_time = 0;
						var timeTn = setInterval(function() {
							out_time++;
							if (out_time <= 30) {
								_this.pay_result_query(wxArr.order_id, function() {
									clearInterval(timeTn);
									_this.load();
									uni.showToast({
										title: '充值成功',
										icon: 'none'
									});
								});
							} else {
								uni.showToast({
									title: '业务超时，如已支付，请稍后再个人页面查看是否到账',
									icon: 'none'
								});
							}
						}, 1000);
					} else {
						uni.showToast({
							title: '业务超时，如已支付，请稍后再个人页面查看是否到账',
							icon: 'none'
						});
						_this.pay_switch = false;
					}
				},
				fail: function(err) {
					_this.pay_switch = false;
					return false;
				}
			});
		},
		//支付结果查询（订单号）
		pay_result_query(order_id, fun) {
			console.log('正在查询');
			ef.submit({
				request: {
					s: [
						'APPLICATIONORDERSELFPAYSTATE',
						[
							{
								order_id: order_id
							}
						]
					]
				},
				callback: function(data) {
					// console.log('支付查询回调成功',data.data.s.data) ;return data.data.s.data;
					if (
						fns.checkError(data, 's', function(errno, error) {
							return false;
						})
					) {
						fun();
					}
				},
				error: function(err) {
					return 0;
				}
			});
		},
		load() {
			var that = this;
			ef.submit({
				request: {
					s: ['USERMONEYSELFTOTAL']
				},
				callback: function(data) {
					console.log('预付款', data);
					if (data.data.s.errno == 0) {
						that.money = data.data.s.data;
						setTimeout(function() {
							uni.navigateBack({
								delta: 1
							});
						}, 1000);
					}
				},
				error: function(err) {
					console.log('出错啦', err);
				}
			});
		}
	}
};
</script>

<style>
page {
	background-color: #ebebeb29;
}
.status-contents {
	width: 100%;
	height: 100upx;
	background: rgba( 242 155 135);
	display: flex;
	line-height: 100upx;
}
.status-contents_left {
	position: absolute;
	top: -5upx;
}
.status-contents_centent {
	width: 100%;
	text-align: center;
	color: #ffffff;
}
.Box {
	width: 90%;
	padding-left: 5%;
	color: #333333;
	margin-top: 20upx;
}
.BoxTitle{
	width: 100%;
	height: 80upx;
	font-size: 32upx;
	line-height: 80upx;
}
.moenyBox{
	width: 100%;
	height: 100upx;
	display: flex;
}
.moenyBoxCotent{
	width: 200upx;
	height: 90upx;
	border: 1upx #CCCCCC solid;
	line-height: 90upx;
	text-align: center;
	margin-right: 25upx;
	font-size: 28upx;
	border-radius: 15upx;
}
.active{
	width: 200upx;
	height: 90upx;
	border: 1upx #F29B87 solid;
	line-height: 90upx;
	text-align: center;
	margin-right: 25upx;
	font-size: 28upx;
	border-radius: 15upx;
	background:#fba794a1;
	color: #FFFFFF;
}
.Boxinput{
	width: 100%;
	height: 100upx;
}
.Boxinput input{
	width: 95%;
	padding-left: 2%;
	height: 80upx;
	background-color: #FFFFFF;
	border: 1upx #D8D8D8 solid;
	border-radius: 15upx;
	margin-top: 20upx;
	font-size: 30upx;
}
.tip{
	width: 100%;
	height: 60upx;
	font-size: 28upx;
	color: #7C7C7C;
}
.btnOne{
		 width: 100%;
		 height: 80upx;
		 background: rgba( 242 155 135);
		 font-size: 30upx;
		  line-height: 80upx;
		  color: #FFFFFF;
		  margin-top: 40upx;
	}
	.btnTwo{
		 width: 100%;
		 height: 80upx;
		 background-color: #ebebeb29;
		 border: #F29B87 solid 1upx;
		 color: #F29B87;
		 font-size: 30upx;
		 line-height: 80upx;
		 margin-top: 50upx;
	}
</style>
